#include <iostream>


//C语言
// void Swap(int *a,int *b)
// {
//     int c = *a;
//     *a = *b;
//     *b = c;
// }



//C++
void Swap(int &a,int &b)
{
    int c = a;
    a = b;
    b = c;
}

int main()
{


    // 引用 
    // int a = 10;
    // 引用定义时必须初始化
    // 左值引用 : 引用只能绑定左值
    // int &b = a; //b是a的引用 : 间接访问内存，修改内存的方式

    // const & : 常引用 : 接右值
    // const int &b = 10;
    // b = 20;
    // std::cout  << a << std::endl;

    // int a = 10;
    // int b = 20;
    // Swap(a,b);
    // std::cout << "a:" << a << " " << "b:" << b << std::endl;

    int a = 10;
    // 引用在初始化绑定后不会绑定为其他变量的引用
    int &b = a;
    int c = 30;
    b = c;  // c的值赋给a

    // 引用的本质是什么?  指针常量
    // int &b = a;
    // g++
    // ==> int* const b = &a;
    

    return 0;
}